/*给你一个非常大的整数 n 和一个整数数字 x ，大整数 n用一个字符串表示。n 中每一位数字和数字 x 都处于闭区间 [1, 9] 中，
* 且 n 可能表示一个 负数 。你打算通过在 n 的十进制表示的任意位置插入 x 来 最大化 n 的 数值 。但 不能 在负号的左边插入 x 。
* 例如，如果 n = 73 且 x = 6 ，那么最佳方案是将 6 插入 7 和 3 之间，使 n = 763 。
* 如果 n = -55 且 x = 2 ，那么最佳方案是将 2 插在第一个 5 之前，使 n = -255 。
* 返回插入操作后，用字符串表示的n 的最大值。
*
* 输入：n = "-13", x = 2
* 输出："-123"
* 解释：向 n 中插入 x 可以得到 -213、-123 或者 -132 ，三者中最大的是 -123 。
* */

package test;

public class leetcode1881 {

    public static void main(String[] args) {

        leetcode1881 obj = new leetcode1881();
        String n = "79";
        int x = 6;
        System.out.println(obj.maxValue(n, x));
    }

    public String maxValue(String n, int x){

        int len = n.length();
        if (n.charAt(0) != '-'){
            for (int i = 0;i < len;i++){
                if (Integer.parseInt(Character.toString(n.charAt(i))) < x){
                    String newStr = insertStr(n, i, Integer.toString(x).charAt(0));
                    return newStr;
                }
            }
            String newStr = insertStr(n, len, Integer.toString(x).charAt(0));
            return newStr;
        }else{
            for (int i = 1;i < len;i++){
                if (Integer.parseInt(Character.toString(n.charAt(i))) > x){
                    String newStr = insertStr(n, i, Integer.toString(x).charAt(0));
                    return newStr;
                }
            }
            String newStr = insertStr(n, len, Integer.toString(x).charAt(0));
            return newStr;
        }
    }

    public String insertStr(String n, int i, char c){

        StringBuilder s = new StringBuilder();
        s.append(n).insert(i, c);
        return s.toString();
    }
}
